package com.iot.practice.designpattern.builder.pattern;

import com.iot.practice.designpattern.builder.BMWModel;
import com.iot.practice.designpattern.builder.BenzModel;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>BuilderPatternClient 此类用于：</p>
 * <p>@author：hujm</p>
 * <p>@date：2021年02月07日 9:56</p>
 * <p>@remark：</p>
 */
public class BuilderPatternClient {

    public static void main(String[] args) {
        // 客户告诉牛叉公司，我要这样一个模型，然后牛叉公司就告诉我老大，说要这样一个模型，这样一个顺序，然后我就来制造
        List<String> sequenceList = new ArrayList<>();

        // 客户要求，run的时候时候先发动引擎
        sequenceList.add("engine boom");
        // 启动起来
        sequenceList.add("start");
        // 开了一段就停下来
        sequenceList.add("stop");

        // 要一个奔驰车：
        BenzBuilder benzBuilder = new BenzBuilder();
        // 把顺序给这个builder类，制造出这样一个车出来
        benzBuilder.setSequence(sequenceList);
        // 制造出一个奔驰车
        BenzModel benzModel = (BenzModel) benzBuilder.getCarModel();
        // 奔驰车跑一下看看
        benzModel.run();

        // 按照同样的顺序，我再要一个宝马
        BMWBuilder bmwBuilder = new BMWBuilder();
        bmwBuilder.setSequence(sequenceList);
        BMWModel bmwModel = (BMWModel) bmwBuilder.getCarModel();
        bmwModel.run();
    }
}
